package com.leetcode;

import java.util.Arrays;
import java.util.HashMap;

public class L0350 {
    public static void main(String[] args) {
        int[] nums1={1,2,2,1};
        int[] nums2={2,2};
    }
    public int[] intersect(int[] nums1, int[] nums2) {
        HashMap<Integer, Integer> map = new HashMap<>();
        if (nums1.length > nums2.length) {
            return intersect(nums2, nums1);
        }
        int val;
        for (int i : nums1) {
            if (map.containsKey(i)){
                val=map.get(i);
                map.put(i,val+1);
            }else {
                map.put(i,1);
            }
        }
        int index=0;
        int[] res=new int[nums1.length];
        for (int i : nums2) {
            if (map.containsKey(i)){
                val=map.get(i);
                if (val>0){
                    res[index++]=i;
                    map.put(i,val-1);
                }
            }
        }
       return Arrays.copyOfRange(res,0,index);
    }
}
